iterative logic